#include <stdio.h>

/**
 * @brief 直接插入排序函数，时间复杂度O(n^2)，空间复杂度O(1)，适合小规模数据排序
 * @param arr 待排序数组
 * @param n 数组长度
 * @return 0表示成功，-1表示失败
 */
int throughInsertSort(float arr[], int n)
{
  // 参数验证
  if (arr == NULL || n <= 0)
  {
    return -1; // 返回错误码
  }

  for (int i = 1; i < n; i++)
  {
    float key = arr[i];
    int j = i - 1;

    // 将大于key的元素向后移动
    while (j >= 0 && arr[j] > key)
    {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = key;
  }
  return 0; // 成功返回
}

int main()
{
  float arr[] = {12.5, 11.2, 25.0, 13.1, 5.3, 6.7};
  int n = sizeof(arr) / sizeof(arr[0]);
  throughInsertSort(arr, n);
  printf("Sorted array: \n");
  for (int i = 0; i < n; i++)
    printf("%.1f ", arr[i]);
  return 0;
}